import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.jar.JarOutputStream;

//类名定义：大驼峰
public class Test {
    public static void main(String[] args) {

        System.out.println((float)1/3);
        System.out.println((double)1/3);
        //java中对小数求余数
        System.out.println(11.54%2);

        //除零的时候，出现异常
        //算数异常
        //ArithmentException
//


//为什么java中ctrl shift /
        //两个shift为什么不一样呢？？？？


        //增量运算符
        //
        //c+=d;
        //增量运算符会给我们进行类型转换
        //
        //此处其他地方和C语言基本没有差异。
        //

        //关系运算符只能得到true或者false
        //

        //逻辑运算符
        //逻辑与逻辑或逻辑非
        //左右两边必须是布尔表达式
        //逻辑非就是真变为假，假变为真
        //
//        &&
//        ||
//        ！
        //逻辑运算符的短路运算，也就是  &&   ||
        //不去算没有必要的部分
        //为了节省计算机硬件资源
        //所以干脆设计就不算
        //这样可以导致有的异常被隐藏
        //异常抛不出来，我不给你抛出来的机会
        //可以有一些坑出现，

        //
        //&  和    |
        //如果表达式的结果为boolean的时候，也表示逻辑运算
        //但是不支持短路运算，也就是会抛出异常
        //你可以偷偷用这个
        //哦吼，哭唧唧


        //二进制位的操作
        //
        //对应位置全为1，才为1-----&

        //对应位置全为0，才为0-----|

        //按位取反，0变为1，1变为0------   ~

        //按位异或^   ------  ^也就是那个我以前看到过的表示数学幂的数值
        //相同为0，相异为1--

        //标记不同，小黑子是吧！！！
        //异或的神奇考点
        //0去异或
        //相同数字异或
        //交换律产生一个吧
        //

        //移位运算符  >>   <<   >>>
        //移位运算符对计算机来说很友好，运算效率高
        //计算机很喜欢这个运算方法

        //左移相当于乘法，你平时写的×2，在计算机底层已经被优化为左移一位了

        //右移相当于除法，你平时写的÷2，计算机底层已经优化为右移
        //右移，补充的是符号位

        //于是产生了   >>>
        //无符号右移，为什么有这个，因为左移不用去考虑符号位哪里，直接补0

        //三目运算符
        //表达式1 ? 表达式1:表达式2
        System.out.println(true? 1:0);

        //


        //看看数字电路，

        //



//
//
//
}
    //类型转换
    //java是一个强类型语言，你必须要注意，在C语言中仅仅报警告
    public static void main8(String[] args) {
        int a=10;
        long b=100L;
        //a=b;     //直接这样写，直接报错，
        a=(int)b; //强制类型转换，就相当于你给他盖了一个章子，你确认这样做


        b=a;//此处发生隐式类型转换
        byte c2=127;
        //byte c=256;    //256超过了byte类型，我就认为你是int类型了，
        //然后你又吧int类型给了byte类型
        //大的给小的，合适吗？？？？？

        boolean flg=true;
        //你就算去强转这个也会错，因为类型不相干

        //类型提升----不同类型之间相互运算的时候，会自动提升，提升算完之后，就依据左边的那个情况来进行阶段啥的
        //小于int类型的，自动提升为int，
        //
        //那个圆的故事。。
        //这样做是为了硬件实现更方便
        //存在即合理
        //


        //1.字符串和数字的转换
        //在c语言中没有字符串类型
        //

        //
        String s1 ="dongliyang";
                //并不是包装类，但是是引用
        //包装类值对应基本的数据类型
        //
        int h=100;
        String s2 =String.valueOf(h);
        System.out.println(s2);
        String s3=a+"hello";

        System.out.println('x'+10+20);
        System.out.println(10+20+'X');
        //字符串拼接，注意一下下哈

        System.out.println("======================");
        String str1="200";
        int ret = Integer.valueOf(str1);
        System.out.println(ret+1);
        //调用Integer的方法，来实现转换
        //java里面的方法是通过点号来进行调用


        int ret2=Integer.parseInt(str1);
        System.out.println(ret2);



    }
    public static void main4(String[] args) {
        boolean flg=true;
        //java中，没有0是假，非0为真的说法
        //只有true和false
        //没有明确规定占用几个字节，
        System.out.println();
    }
    public static void main3(String[] args) {
        char ch ='A';//2个字节，和c有区别
        char ch2='董';
        //char类型的包装类，
        System.out.println(Character.MAX_VALUE);
        System.out.println(Character.MIN_VALUE);

        //用两个字节，是因为扩展存储的字符数，包括中文
        //并且没有负数，字符不需要政府来标识。
        //java中使用Unicode，2个字节，更大
        //C语言使用ascii 0~255  总共256，一个字节
        //unicode里包含了ascii的值，为了包容，
        //

        //记事本上面写完代码，默认UTF-8（windows）
        //
    }
    public static void main2(String[] args) {
        int a=10;
        int b=5;
        System.out.println(10/5);

        //什么东西是单精度呢
        float f=12.5f;
        //默认小数是double，
        //然后你把8字节数字放到4字节中，就会错误，
        //直接报错
        //

        //精确到小数点后几位，


    }
    public static void main6(String[] args) {
        System.out.println("helloworld" +" "+"dongliyang");

        //数据类型

        //基本数据类型

        //整形  int   -----Integer  plus版本，实际是包装类
        //long ，长整型，8个字节，也是固定长度----也就是1个符号位，63个数值位
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

        //long类型后面要有L，不建议小写，不好区分，可能看错
        //short
        //短整型，2个字节，16位，一个符号位，15个数值位

        //long long

        byte b1=9;
        //byte,也是整形，一个字节的

        //和char差不多
        //但是差距还是大。

        //
        //浮点型
        //float
        //double---Double，包装类型

        //在程序的世界没有精确的小数


        //字符型
        //布尔类型

        //在java当中，局部变量一定要先定义，初始化，然后使用




        //引用数据类型
    }
}
